面向对象

您所在的位置:网站首页 面向对象 对象是什么 面向对象

面向对象

2024-07-12 09:08| 来源: 网络整理| 查看: 265

面向对象(是什么,为什么,怎么样) 1.面向对象是什么 引语:让我们先看看百度对面向对象的概念 百度概念:面向对象(Object Oriented)是软件开发方法,一种编程范式。面向对象的方法就是利用抽象、封装等机制,借助于对象、类、继承、消息传递等概念进行软件系统构造的软件开发方法。面向对象应用在很多领域,应用广泛。 引语:这个描述很抽象,不是很好理解,那究竟什么是面向对象?有没有什么更清晰的解释呢? 解释:面向对象,顾名思义,就是面向对象,那什么是对象?对象就是对现实事物的抽象,将例如一条狗、一只猫都是对象。面向对象通过将现实事物及其关系抽象出来,抽象成类,通过继承、实现、组合的方式将完事万物都容纳进去。面向对象主要就是把构成问题的各个事务分解成各个对象,把相关的方法和方法组织为一个整体来看待,建立对象不是为了完成一个步骤,而是为了描叙一个事物在整个解决问题的步骤中的行为。 引语:文字性的概念还是很抽象,所以我们就用一个例子来更具体说明一下吧。 就比如我们要设计一个五子棋程序。 面向过程就是首先分析解决问题所需要的的步骤,这里就下面几个步骤① 开始游戏;② 黑子先走;③ 绘制画面;④ 判断输赢;⑤ 轮到白子;⑥ 绘制画面;⑦ 判断输赢;⑧ 返回步骤 ;⑨ 输出最后结果等,然后设计函数,通过函数实现每个步骤的功能,在使用的时候依次调用,面向过程恒是一种顺序的思维方式,将程序分为数据和操作数据的方法两部分,我们过去学习的C语言就是这一典型例子。 void GameStart(){ //开始游戏 } void BoardDrawing(){ //绘制棋盘 } void ResultOut(int i){ //结果输出 } int ResultJudge(){ //结果判断 ResultOut(i); return } void ChessPlay(int i){ //下棋(两个选手) } int main(){ //定义棋盘属性 GameStart(); while(1){ BoardDrawing(); ChessPlay(1); int out=ResultJudge(); if(out!=0) break; ChessPlay(2); BoardDrawing(); int out=ResultJudge(); if(out!=0) break; } return 0; } 而面向对象则首先抽象出程序的几个对象,这里大概三个对象① 棋手,即黑白双方;② 棋盘系统,负责绘制画面;③ 规则系统,负责判定诸如犯规、输赢等。① 类对象(玩家对象)负责接受用户输入,并告知第 ② 类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第 ③ 类对象(规则系统)来对棋局进行判定。可以看出,面向对象是基于功能来划分问题,而不是基于步骤。 class chessPlayer{ //棋手 //属性 //方法:下棋 } class chessBoard{ //棋盘 //属性:棋盘属性、棋子布局 //方法:初始化棋盘、绘制棋盘 } class ruleSystem{ //规则系统 //属性 //方法:判断输赢 }

总结一下,就是面向过程是基于步骤,分析出实现需求所需要的步骤,通过函数(方法)一步一步实现这些步骤,接着依次调用即可。而面向对象是基于行为,按程序的功能划分,把具有共性、相同行为的部分封装成类(类实例化即为对象),其创建对象不是为了完成某一个步骤,而是描述某个事物在解决问题的步骤中的行为。

2.为什么要有面向对象?面向对象的产生背景 面向对象是在结构化设计方法出现很多问题的情况下应运而生的。结构化设计方法求解问题的基本策略是从功能的角度审视问题域。它将应用程序看成实现某些特定任务的功能模块,其中子过程是实现某项具体操作的底层功能模块。在每个功能模块中,用数据结构描述待处理数据的组织形式,用算法描述具体的操作过程。面对日趋复杂的应用系统,这种开发思路在下面几个方面逐渐暴露了一些弱点。 1.分析问题的角度 2.抽象级别 3.封装体 4.可重用性

具体的描述文字太多了,就简单来说吧,主要就是不符合人类解决问题的习惯,且当问题规模越来越大、环境和需求越来越复杂,编写代码和维护程序都会很困难,以及面向对象对客体属性的保护更好,能提高软件代码的可复用性,所以出现了面向对象。

3.面向对象的特征 内容:面向对象的三大特性:

1、封装 隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。有效实现了两个目标:对数据和行为的包装和信息隐藏。 2、继承 提高代码复用性;继承是多态的前提。 3、多态 父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的拓展性。

4.面向对象与面向过程的区别

​ 图片对比更直观

对比 说明:关于性能的问题,这里只是在笼统意义上来说,具体性能优劣,需要结合具体程序,环境等进行比对



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3